38 research outputs found

    Comment-based concept location over system dependency graphs

    Get PDF
    Software maintenance is one of the most expensive phases of software development and understanding a program is one of the most important tasks of software maintenance. Before making the change to the program, software engineers need to find the location, or locations, where the changes will be made, they need to understand the program. Real applications are huge, sometimes old, were written by other person and it is difficult to find the location of the instructions related to a specific problem domain concept. There are various techniques to find these locations minimizing the time spent, but this stage of software development continues to be one of the most expensive and longer. The concept location is a crucial task for program understanding. This paper presents a project whose main objective is to explore and combine two Program Comprehension techniques: visualization of the system dependency graph and concept location over source code comments. The idea is to merge both features in order to perform concept location in system dependency graphs. More than locate a set of hot instructions (based on the associated comments) it will allow to detect the other instructions (the whole method).(undefined

    Sistematização da animação de programas : proposta de um novo sistema para construção automática e sistemática de animações de programas

    Get PDF
    Este documento apresenta e discute a tese de doutoramento da autora. Defendendo a importância da visualização e animação de programas, esta dissertação aborda temas relacionados com a representação visual, estática e dinâmica, dos conceitos envolvidos nos programas de computador: variáveis, operações, instruções de entrada/saída e de controlo, fluxo de dados e de execução. O trabalho teve como principais objectivos aprofundar conhecimentos sobre os conceitos de animação e visualização de programas, rever os sistemas de animação existentes e propor algo inovador nesta área, no sentido da automatização e generalização do processo de construção dessas animações. Por automatização entende-se a capacidade de criar o visualizador/animador a partir de um programa fonte, sem custo adicional para o utilizador. Por generalização entende-se a sua adaptação a diferentes algoritmos e linguagens fonte. Para alem do estudo do estado actual da arte de animar programas, foi criado um sistema de classificação dos animadores existentes e foram efectuadas análises comparativas dos mesmos. E então proposto um novo sistema chamado Alma que separa o processo em front-end e back-end e usa uma representação intermédia universal para atingir a sistematização pretendida. No documento são apresentadas todas as especificações relativas a este sistema, assim como, diversos detalhes técnicos da sua prototipagem. A arquitectura concebida para o Alma, baseada em motores e regras de transformação independentes, concede-lhe um carácter extensível sendo, por isso, possível adaptá-lo facilmente a diferentes visualizações e diferentes paradigmas.The PHD Thesis of the author is presented and discussed in this document. In this work, the author defends the usefulness of program animation and visualization, discussing subjects related with the visual representation of the concepts present in computer programs, such as: variables, operations, input and output statements, data and control flow. After getting a deeper knowledge about animation and visualization of programs, the work proceeded studying existing animation systems, attaining the definition of a classification criteria. Applying that criteria, those systems were grouped by their main characteristics, allowing to compare them and the identification of a class where a solution was lacking. The main contribution of this thesis is a system aiming at filling that gap. This proposal intends to automatize and generalize the construction of animation systems from the formal definition of programming languages. Automatization means the ability to generate a visualizer and animator program for a given programming language from its grammatical specification without the human intervention. Generalization means the ability of the generator to couple with different algorithms and programming paradigms. The proposed visualizer and animator is not algorithm neither language dependent; it processes any program in languages for which an appropriated parser was generated. Moreover, the animation does not require the use of special data types nor special annotations. The new system, called Alma, separates the front-end process from the back-end one and uses an universal intermediate representation in order to achieve the desired systematization. In this document, the system specification and technical details about Alma prototype are discussed. The system architecture, based on independent transformation rules and engines, allows to obtain an open system: it is easy to modify or add rewriting rules and drawings in order to process programs in different paradigms and to produce different visual results.PRODEP - Medida 5 Acção 5.2 ; Instituto Politécnico de Bragança

    Comment-based Concept Location over System Dependency Graphs

    Get PDF
    Abstract Software maintenance is one of the most expensive phases of software development and understanding a program is one of the most important tasks of software maintenance. Before making the change to the program, software engineers need to find the location, or locations, where the changes will be made, they need to understand the program. Real applications are huge, sometimes old, were written by other person and it is difficult to find the location of the instructions related to a specific problem domain concept. There are various techniques to find these locations minimizing the time spent, but this stage of software development continues to be one of the most expensive and longer. The concept location is a crucial task for program understanding. This paper presents a project whose main objective is to explore and combine two Program Comprehension techniques: visualization of the system dependency graph and concept location over source code comments. The idea is to merge both features in order to perform concept location in system dependency graphs. More than locate a set of hot instructions (based on the associated comments) it will allow to detect the other instructions (the whole method). ACM Subject Classification D.2.7 Maintenanc

    Program analysis for Clustering Programmers' Profile

    Get PDF
    Each programmer has his own way of programming but some criteria can be applied when analysing code: there are a set of best practices that can be checked, or ''not so common'' instructions that are mainly used by experts that can be found. Considering that all programs that are going to be compared are correct, it's possible to infer the experience level of the programmer or the proficiency level of the solution. The approach presented in this paper has as main goal to compare sets of solutions to the same problem and infer the programmers profile. This can be used to evaluate the programmer skills, the proficiency on a given language or evaluate programming students. A tool to automatically profiling Java programmers called PP (Programmer Profiler) is presented in this paper as a proof of concept.This work has been supported by COMPETE: POCI-01-0145-FEDER-007043 and FCT - Fundacao para a Ciencia e Tecnologia within the Project Scope: UID/CEC/00319/2013

    Value-focused investigation into programming languages affinity

    Get PDF
    The search for better techniques to teach computer programming is paramount in order to improve the students' learning experiences. Several approaches have been proposed throughout the years, usually through technical solutions such as evaluation systems, digital classrooms, interactive lessons and so on. Personal factors, such as affinity, have been largely unexplored due to their qualitative and abstract nature. The results of a preliminary survey on how and why affinity is created between programmers and their favorite languages, conducted on a master’s degree class at Universidade do Minho, showed unexpected results as to which languages became favorites and the possible reasons for the students' choices. Aiming at further exploration on this topic and continuation of this research, the Value-Focused Thinking method was applied in order to construct a more complex, in-depth survey. This value-oriented method kept focus under control and even raised a handful of opportunities to improve the research as a whole. This paper describes the Value-Focused Thinking method and how it was applied to construct a new and deeper computer programming education survey to understand affinity with languages

    Programmers' affinity to languages

    Get PDF
    Students face several challenges when learning computer programming languages, a central topic to acquire programming skills. While those challenges that present a predominantly technical nature have been intensely studied by researchers along the years, the ones that are concerned with qualitative, and personal aspects have not. Affinity to a programming language is one of the many personal factors that may contribute to surpass these qualitative aspects that describe the difficulties that students face. From this point-of-view, this paper presents a proposal for treating and studying programmers' affinity to programming languages as an important factor for learning computer programming. It also reports a preliminary questionnaire conducted on a master's degree class at Universidade do Minho that showed that affinity may have a broader relation to learning computer programming than anticipated. Finally, a set of relevant questions are stated to compose a future inquiry aimed at deepening the knowledge on the affinity between programmers and languages, paving the way for following research.This work has been supported by FCT – Fundação para a Ciência e Tecnologia within the R&D Units Project Scope: UIDB/00319/2020

    Choosing grammars to support language processing courses

    Get PDF
    Teaching Language Processing courses is a hard task. The level of abstraction inherent to some of the basic concepts in the area and the technical skills required to implement efficient processors are responsible for the number of students that do not learn the subject and do not succeed to finish the course. In this paper we intend to list the main concepts involved in Language Processing subject, and identify the skills required to learn them. In this context, it is feasible to identify the difficulties that lead students to fail. This enables us to suggest some pragmatic ways to overcome those troubles. We will focus on the grammars suitable to motivate students and help them to learn easily the basic concepts. After identifying the characteristics of such grammars, some examples are presented to make concrete and clear our proposal. The contribution of this paper is the systematic way we approach the process of teaching Language Processing courses towards a successful learning activity.(undefined

    Conclave: Writing programs to understand programs

    Get PDF
    Software maintainers are often challenged with source code changes to improve software systems, or eliminate defects, in unfamiliar programs. To undertake these tasks a sufficient understanding of the system, or at least a small part of it, is required. One of the most time consuming tasks of this process is locating which parts of the code are responsible for some key functionality or feature. This paper introduces Conclave, an environment for software analysis, that enhances program comprehension activities. Programmers use natural languages to describe and discuss the problem domain, programming languages to write source code, and markup languages to have programs talking with other programs, and so this system has to cope with this heterogeneity of dialects, and provide tools in all these areas to effectively contribute to the understanding process. The source code, the problem domain, and the side effects of running the program are represented in the system using ontologies. A combination of tools (specialized in different kinds of languages) create mappings between the different domains. Conclave provides facilities for feature location, code search, and views of the software that ease the process of understanding the code, devising changes. The underlying feature location technique explores natural language terms used in programs (e.g. function and variable names); using textual analysis and a collection of Natural Language Processing techniques, computes synonymous sets of terms. These sets are used to score relatedness between program elements, and search queries or problem domain concepts, producing sorted ranks of program elements that address the search criteria, or concepts respectively. © Nuno Ramos Carvalho, José João Almeida, Maria João Varanda Pereira, and Pedro Rangel Henriques.(undefined)info:eu-repo/semantics/publishedVersio

    A language processing tool for program comprehension

    Get PDF
    Program Comprehension is a Software Engineering discipline which aims to understand computer code written in a high-level programming language. Program Comprehension is useful for reuse, inspection, maintenance, reverse engineering and many other activities in the context of Software Engineering. In this paper we define a set of techniques to extract static and dynamic information from the target program. These techniques are based on the inclusion of inspection functions and control statements in the system’s source code. The first are intended to show the functions actually used. The second are necessary to reduce the number of functions recovered for a better administration. We show a possible implementation of this approach using a language processor generator very useful and easy to use. Our strong motivation was to support the understanding of routing algorithms, available in EAR a routing algorithms evaluation system. To assist the program comprehension task, we generate different views that use the information extracted by our strategy, such as the routing algorithm output (that can be seen as a problem domain view), or the sequence of called functions, and their source and object code (examples of program domain views). Although specific, we intend to generalize this approach.III Workshop de Ingeniería de Software y Bases de Datos (WISBD)Red de Universidades con Carreras en Informática (RedUNCI

    Comprensión de programas por inspección visual y animación

    Get PDF
    PCVIA (Program Comprehension by Visual Inspection and Animation) es un proyecto de investigación que estudia la construcción de métodos, técnicas y herramientas que ayuden al ingeniero del software en el análisis y comprensión de aplicaciones. Estos estudios tienen como objetivo contribuir en distintas actividades de la Ingeniería del Software como por ejemplo mantenimiento, reingeniería, ingeniería reversa, entre otras tantas aplicaciones. Para construir ambientes de comprensión de programas es necesario concebir herramientas que permitan extraer y visualizar información de los sistemas. Para lograr este objetivo es necesario analizar los métodos, técnicas, herramientas, etc. existentes con la finalidad de incrementar la funcionalidad de las mismas, o bien, proponer otras nuevas. En este artículo describimos un abordage para la construcción de herramientas de comprensión que se basa en la instrumentación del código fuente del sistema de estudio. Entre los objetivos de esta aproximación se encuentran la elaboración de estrategias de navegación y relación entre las distintas perspectivas de sistemas desarrolladas usando el paradigma imperativo. Por otra parte se planifica analizar la extensibilidad de las mismas a otros paradigmas como por ejemplo el orientado a objeto.Eje: Ingeniería de Software y Base de DatosRed de Universidades con Carreras en Informática (RedUNCI
    corecore